A database is generally a collection of related information stored in computer readable form. Databases are ubiquitous in modern life. Mobile phones often contain databases of recently and frequently called numbers. The world wide web is comprised of countless databases. Hand held computers are in large part valuable because of the databases they contain. In fact, the databases contained in most computers are far more valuable than the computer hardware itself.
In order to use this valuable information, people must have access to the information. This is frequently accomplished using different types of computers for different situations. For example, a salesman may create a spreadsheet containing pricing information on a desktop computer, and desire to access that information via a small hand held computer while at a customer's premises.
It is often difficult, expensive or impractical to actually access the same database from both types of computers, especially if one is operated in a mobile environment. To overcome this difficulty, a process of synchronizing databases was developed.
Synchronizing a database is generally a process by which a plurality of copies of a database is maintained such that the information in all copies is the same, or synchronized. The copies need not be bit for bit identical. A synchronization process can accommodate different file structure, operating system and data media requirements. The copies are frequently on different computer systems, but it is sometimes desirable to maintain separate, synchronized databases on the same computer system. Synchronization allows updates (“mutations”) e.g., additions, deletions and/or changes made to one copy of a database, for example a copy on a hand held computer, to be reflected to all copies.
Prior art synchronization systems generally require all databases to be “present,” e.g., connected to the synchronization system at the same time, in order to be synchronized. As an unfortunate result, databases which are only occasionally connected to a synchronization system, e.g., a hand held computer, or databases which are connected via an intermittent or otherwise costly link, e.g., a wireless communications link, may be synchronized less often than is necessary or desirable. As an unfortunate consequence, information in the entire set of databases may be less up-to-date, and therefore less valuable, than if synchronization had occurred more frequently.